package br.com.verde.exemploteca.ivpiter;

public class ConverterJava {

	public int romanToArabic(final String romanNumber) {
		int arabic = 0;
		int previewArabic = 0;
		int currentArabic = -1;
		boolean firstIteraction = true;

		for (int i = romanNumber.length() - 1; i > -1; --i) {
			currentArabic = oneRomanCharacterToArabic(romanNumber.charAt(i));
			if (firstIteraction) {
				previewArabic = currentArabic;
				arabic = currentArabic;
				firstIteraction = false;
			} else {
				if (currentArabic < previewArabic) {
					arabic = arabic - currentArabic;
				} else {
					arabic = arabic + currentArabic;
				}
				previewArabic = currentArabic;
			}
		}

		return arabic;
	}

	private int oneRomanCharacterToArabic(final char roman) {
		final char romanCharacter = Character.toUpperCase(roman);
		switch (romanCharacter) {
		case 'I':
			return 1;
		case 'V':
			return 5;
		case 'X':
			return 10;
		case 'L':
			return 50;
		case 'C':
			return 100;
		case 'D':
			return 500;
		case 'M':
			return 1000;
		default:
			return 0;
		}
	}
}